import * as bm from "../js/baseModule.js";
import * as NewFooter from "../modules/common/NewFooter.js";
import * as ProjectList from "../modules/project/ProjectList.js";

export class Module extends bm.baseModule {
    constructor(view) {
        super(view);
        this.init();

        $(document).on('data_update',function () {
            // //如果没有弹出过设置服务资料的弹窗
            // if (globalData.user.status == 0 && !funs.getSession('hasSetUserInfo')) {
            //     funs.openModal('modules/modals/CommonModal.js',function (mod) {
            //         mod.setType(2);
            //     })
            // }
            // //如果没有弹出过设置业务范围的弹窗
            // else if (!globalData.user.has_set_business && !funs.getSession('hasSetBusiness')) {
            //     funs.openModal('modules/modals/CommonModal.js',function (mod) {
            //         mod.setType(10);
            //     })
            // }

            // 如果是客户，弹出完善资料提示框
            if (globalData.user.user_type == 1) {
                funs.openModal('modules/modals/CommonModal.js',function (mod) {
                    mod.setType(2);
                })
            }
            // 升级铜牌的提示
            if (globalData.user.level == 20 && !globalData.user.level_3_notify) {
                funs.openModal('modules/modals/CommonModal.js',function (mod) {
                    mod.setType(12,{level:"铜牌"});
                    // 记录 已经显示过此信息
                    api.notifyLevel({level_3_notify: true});
                })
            }

            // 如果账号是黑名单
            if (globalData.user.black) {
                funs.openModal('modules/modals/BlackAccount.js',null);
            }
        })
    }
    init() {
        //统计关注公众号自动回复消息的点击率
        let welcome = funs.qs('welcome');
        if (welcome == '1') {
            api.event_welcome();
        }
        // 实际的当前项目id
        let current_demand_id = funs.qs("did");
        let current_uid = funs.qs("uid");
        let partical = funs.qs("partaken");
        let freeList = funs.qs("freelist");

        if (current_demand_id) {
            globalData.current_demand.id = current_demand_id;
        }
        //微信进入采购，制作，租赁，维修报装时，区分判断
        let Type = funs.qs("type") || '1';
        globalData.currType = Type;

        //直接进入“我参与的”首页
        if (partical) {
            globalData.particalList = true;
        }
        //直接进入“免费订单”首页
        if (freeList) {
            globalData.freeList = true;
        }
        
        let that = this;
        // 读取缓存的项目列表
        let list = localStorage.getItem('prolist');
        if (list != null) {
            list = JSON.parse(list);
        } else {
            list = [];
            list.push(demand_empty);
        }
        globalData.project_list = list;
        // 渲染项目列表； getuserinfo放在回调里面，是确保接口成功返回后，能调用到project list的方法
        funs.getModule('modules/project/ProjectList.html',$('#content'), function (mod) {
            // 获取用户信息
            api.getUserInfo({
                succ: function (user) {
                    $.extend(globalData.user, user);
                    globalData.pack.uid = user.id;
                    that.footer = new NewFooter.Module($('#NewFooter'));
                    mod.init();
                },
                fail: function () {
                    mod.init();
                }
            });
        });
        //获取ip
        api.new_ipLocation({
            succ: function (json) {
                $.extend(true, globalData.ipPos, json);
                $.extend(true, globalData.selPos, json);
            }
        });

        //初始化数据
        api.getInitData({
            succ: function (json) {
                // 用户信息
                json.user = funs.mappingUser(json.user);
                // 已开通的增值服务列表
                let pack = {
                    "id": 0,
                    "uid": json.user.id,
                    "call_point": 0,
                    "sms_point": 0,
                    "total_call_point": 0,
                    "total_sms_point": 0,
                    "accum_call_point": 0,
                    "accum_sms_point": 0,
                    "area_id": [],
                    "end_date": "1970-01-01",
                    "created_at": 0,
                    "updated_at": 0,
                    "deleted_at": 0,
                    "prov_list": [],
                };
                json.pack = json.pack ? json.pack : pack;
                // 参与的项目列表
                json.partic_demand_list = json.partic_demand_list.map(function (item) {
                    return funs.mappingDemand(item);
                });
                // 已开通的增值服务列表
                json.supplier_vas = json.sms_vas_list;
                let supplier_cnt = {
                    "prov_level": 1, // 与当前工程商相同省份相同等级的工程商数量
                    "prov": 1,
                    "total": 1
                };
                json.supplier_cnt = json.supplier_cnt ? json.supplier_cnt : supplier_cnt;
                funs.concatData(json);
            }
        });
    }
}

/**
 * index作为入口的页面模块，需要在此处实例化一个对象；其他模块不需要
 * 实例化操作放在路由加载执行完毕的事件中执行，能保证页面不跳动
 */
$(window).on('routeReady', function () {
    new Module($("body"));
});

/** 因为index.js作为requireJs的入口文件，是异步载入的；route.js监听document load的事件触发时，有可能index.js还没被加载完成。
 * 必须在document的load事件后再实例化index，是因为load之前就加载的话，会面临路由变化页面闪动的问题。
 * 如果首页模块没有被实例化,且页面已经load，则说明上面的routeReady监听触发时，index.js没有加载完成,这会导致index模块没有被实例化。
 * 因此，在此处再做一次index的实例化。
 */
(function () {
    if(!funs.hasLoadModuleArray.hasOwnProperty('index') && globalData.domReady){
        new Module($("body"));
    }
})();